#!/usr/bin/env python

# *************************************************************************

# Copyright 2010 Texas A&M University, 
#                College Station, Texas
#                Contact: R Crosby (rwc@cs.tamu.edu)
#
# Copyright 2003, 2004 by BiRC -- Bioinformatics Research Center
#                University of Aarhus, Denmark
#                Contact: Thomas Mailund <mailund@birc.dk>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

# *************************************************************************

import sys
from QQPkg import FrontInit
from QQPkg import SegmentTrees
from QQPkg import SubmitJobs

# *************************************************************************

if __name__ == "__main__":

    opt, tfiles = FrontInit.ParseCommandLine()
    if opt['verbose']:
        print 'Options       :', opt
        print 'Tree Files    :', tfiles

    config = FrontInit.LoadConfig(opt, 'pqq.cfg')
    if opt['verbose']:
        print 'Sections      :', config.sections()
        print '  default     :', config.options('default')
        print '  cluster     :', config.options('cluster')
        print '  directories :', config.options('directories')
        print '  mail        :', config.options('mail')

    piddir = SegmentTrees.SetupWorkDirectory ( config )

    ntrees, segfiles = SegmentTrees.PartitionTrees ( piddir, tfiles, opt )
    if opt['verbose']:
        print 'Trees         :', ntrees
        print 'Num Segments  :', len(segfiles)
        print 'Segment files :', segfiles

    jName, jNo, nJobs = SubmitJobs.SubmitProcessingJobs ( ntrees, segfiles, piddir, config, opt )
    if opt['verbose']:
        print '# of Jobs     :', nJobs

    jName, jNo = SubmitJobs.SubmitBackendJob(jName, jNo, nJobs, piddir, len(segfiles), config, opt)

    sys.exit(0)
